https://retellai.com/?utm_source=discord&utm_medium=seo logo
I am building a QA workflow to track our internal ...
# ❓・ai-evy-support
m
@AI Evy I am building a QA workflow to track our internal team's performance using Agentic Warm Transfers. I need to programmatically distinguish between two specific failure scenarios, but currently, both return the exact same generic error message to the Main Agent. The Two Scenarios: Transfer Declined (Human said "No"): The Transfer Agent connects, the human rep declines, and the agent executes the cancel_transfer tool. Transfer Timeout (No Pickup): The Transfer Agent calls, but nobody answers. The system hits the transferTimeoutMs limit (30s). The Issue: In both cases, the Main Agent receives the exact same Tool Result: {"status": "Transfer failed due to an error.. Please inform the customer..."} The Request: Is there a specific field in the call_analyzed webhook or the tool_call result that distinguishes these two states? When cancel_transfer is triggered explicitly by the sub-agent, can the status reflect "cancelled_by_agent" or "declined"? When the system times out, can it reflect "timeout" or "no_answer"? Currently, I have to rely on calculating the duration of the tool execution (e.g., 30s = Timeout) to guess the outcome. I would prefer a deterministic status or a "disconnect reason" code in the webhook metadata. Thanks
a
Thanks for tagging me @mike.operations. I'll look through relevant sources and get back to you shortly.
### Answer Based on the available documentation, I don't see a specific field that distinguishes between "transfer declined by human" vs "transfer timeout/no pickup" within the tool call result or
call_analyzed
webhook payload for Agentic Warm Transfers. What the documentation does show: The
disconnection_reason
field in the Get Call API response includes values like
dial_no_answer
,
dial_busy
,
user_declined
, and
call_transfer
[(1) ]() . However, these apply to the call object itself, not specifically to the tool result returned to the Main Agent during an agentic transfer scenario. For warm transfers, the Agent Detection Timeout feature allows you to configure how long the AI waits for an agent to pick up before triggering fallback actions [(2) ]() . But the documentation doesn't specify that a distinct status code is returned to differentiate timeout vs. explicit cancellation. Recommendation: Since the sources don't show a built-in way to distinguish these two failure modes in the tool result payload, your current approach of inferring based on duration may be the only option without a feature request. I'd suggest reaching out to the Retell team directly for clarification or to request this as a feature enhancement: - Visit [Contact Sales]() - Visit [) Would you like me to provide a general answer on how you might structure your own workaround logic in the meantime?
​ To learn more, see the sources I considered: [[1] Get Call](https://docs.retellai.com/api-references/get-call) [[2] Warm Transfer vs Cold Transfer - The AI Advantage in Call Centers | Retell AI](https://www.retellai.com/blog/effortless-handoffs-with-retell-ais-warm-transfer-feature) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
m
: the support docs gave some instructions to compare timings between main agent - transfers agent and 2 different calls but in real case its not working as we expect - anyway - i think we are missing something - this warm transfer is part of the main session even if the sessions have different ids they has to be related somehoiw its nonesence right? After hours agent stays on line whyle tranfer agent speaks with Human rep right? if human rep says no i dont want to answer the phone then tranfers agent hangs up the phone sends tool result mesasge to main agent and this main agent continues conversation with user - so how the transfer agent knows to which session to send summary of the transfer attempt? @AI Evy
a
Thanks for the follow-up, @mike.operations. I'll get back to you soon.
### Answer --- You're asking a valid architectural question, but the available documentation doesn't explicitly describe the internal mechanism by which the Transfer Agent communicates back to the Main Agent session during an Agentic Warm Transfer. What the documentation does confirm: - During a warm transfer, the caller can hear the AI briefing the receiving agent, and the process includes human detection before completing the connection [(1) ]() - The
transcript_with_tool_calls
field captures when a tool was invoked and what the result was [(2) ]() - The LLM WebSocket protocol shows that tool call invocations and results are tracked within the transcript [(3) ]() What's not documented: The sources don't explicitly describe: - How session IDs between the Main Agent and Transfer Agent are correlated internally - The specific mechanism by which the Transfer Agent sends the tool result back to the Main Agent's session - Whether there's a parent-child relationship exposed via API between these call sessions Your intuition is correct—logically, there must be an internal linkage since the Main Agent resumes conversation with the user after the transfer attempt fails. However, the specifics of this session relationship aren't detailed in the available documentation. Recommendation: Since this appears to be an implementation detail not exposed in the public docs, I'd suggest reaching out directly: - Visit [Contact Sales]() - Visit [) Would you like a general answer on potential workarounds for correlating these sessions on your end?
​ To learn more, see the sources I considered: [[1] Warm Transfer vs Cold Transfer - The AI Advantage in Call Centers | Retell AI](https://www.retellai.com/blog/effortless-handoffs-with-retell-ais-warm-transfer-feature) [[2] Get Call](https://docs.retellai.com/api-references/get-call) [[3] LLM WebSocket](https://docs.retellai.com/api-references/llm-websocket) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.